Remotely controlled crowd-sourced media capture

ABSTRACT

The disclosed technology receives at a second computing device a message from a first computing device comprising at least an indication of a physical motion, a requested motion, or an indication of a camera control operation. The indicated motion can correspond to a physical motion made to the first computing device. The indicated camera control operation can correspond to a camera control operation made at the first computing device. The technology requests to physically move the second computing device if the received message indicates a motion; and controls a digital camera associated with the second computing device if the received message indicates a camera control operation made at the first computing device.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a U.S. national phase application under 35U.S.C. §371 of International Application No. PCT/US13/24508, filed onFeb. 1, 2013.

BACKGROUND

People sometimes desire to watch or hear what is going on at remotelocations. For example, television has a long history of enablingviewers to see events occurring virtually anywhere in the world, even asthe events occur live. To broadcast events, television broadcasters maydeploy television crews with television cameras, reporters, andtechnical staff. Television crews can include multiple camera operatorsand cameras, e.g., to capture events from different viewpoints or“angles.” Deploying television crews, however, is an expensive andtime-consuming proposition because of the size of equipment and manpowerthat is required. Moreover, television broadcasters may be unable todeploy television crews until after a newsworthy event has alreadycompleted because of the time required to organize the equipment,manpower, and travel itinerary.

Mobile computing devices, e.g., mobile telephones, tablet computers, andother handheld computing devices, typically have video and audio capturedevices, e.g., cameras, microphones, etc. These types of mobilecomputing devices are now in use almost everywhere around the world, andare becoming ubiquitous. Some of these mobile computing devices havevideo and audio capture devices that rival professional broadcastequipment used by television crews. Recently, mobile telephones haveincluded video capture devices that produce high definition video. It isanticipated that future mobile computing devices will be able to produceeven better quality audio and video suitable for broadcast television.

Although users of mobile computing devices capture photographs, video,and/or audio, e.g., to share this media with others, it is generally notpossible for people to capture media under direction of unknown parties.For example, although a user may be nearby a location where a newsworthyevent is occurring, the user may be unaware of the newsworthy event,e.g., because the user is down the street or around the block. Asanother example, although a user may be watching a newsworthy event andeven capturing media, a remote viewer may desire to see a differentangle or a different subject.

SUMMARY

In some embodiments, the disclosed technology receives at a secondcomputing device a message from a first computing device, the messagecomprising at least an indication of a physical motion or a requestedmotion, or an indication of a camera control operation. The indicatedmotion can correspond to a physical motion made to the first computingdevice and the indicated camera control operation can correspond to acamera control operation made at the first computing device. Thetechnology then requests a user of the second computing device tophysically move the second computing device if the received messageindicates a motion and controls a digital camera associated with thesecond computing device if the received message indicates a cameracontrol operation made at the first computing device.

The foregoing summary is illustrative only and is not intended to be inany way limiting. In addition to the illustrative aspects, embodiments,and features described above, further aspects, embodiments, and featureswill become apparent by reference to the drawings and the followingdetailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating an environment in which thedisclosed technology may operate in various embodiments.

FIG. 2 is a front view illustration of a mobile computing deviceemployed by the disclosed technology in some embodiments.

FIG. 3 is a block diagram illustrating components of a mobile computingdevice employed by the disclosed technology in various embodiments.

FIG. 4 is a block diagram illustrating aspects of a user interfaceemployed by the disclosed technology in various embodiments.

FIG. 5 is a flow diagram illustrating routines invoked by a clientcomputing device and a server computing device in various embodiments.

FIG. 6 is a block diagram illustrating components employed by thedisclosed technology in various embodiments.

FIG. 7 is a block diagram illustrating components employed by thedisclosed technology in various embodiments.

FIG. 8 is a flow diagram illustrating a routine invoked by the disclosedtechnology in various embodiments.

FIG. 9 is a block diagram illustrating portions of a message exchangedby the disclosed technology in various embodiments.

FIG. 10 is a flow diagram illustrating a routine invoked by thedisclosed technology in various embodiments.

FIG. 11 is a block diagram of an illustrative embodiment of a computingdevice that is arranged in accordance with at least some embodiments ofthe present disclosure.

DETAILED DESCRIPTION

In the following detailed description, reference is made to theaccompanying drawings, which form a part hereof. In the drawings,similar symbols typically identify similar components, unless contextdictates otherwise. The illustrative embodiments described in thedetailed description, drawings, and claims are not meant to be limiting.Other embodiments may be utilized, and other changes may be made,without departing from the scope of the subject matter presented herein.It will be readily understood that the aspects of the presentdisclosure, as generally described herein, and illustrated in theFigures, can be arranged, substituted, combined, separated, and designedin a wide variety of different configurations, all of which areexplicitly contemplated herein.

Technology is described for remotely controlling crowd-sourced mediacapture (“the technology”). In various embodiments, a client (e.g., auser of a local computing device) interacts with one or more suppliers(e.g., users of remote computing devices) via the local computing deviceto manipulate the remote computing devices to capture media the clientis interested in. The client can identify one or more suppliers who arenearby a particular geographical location and whose mobile computingdevices are capable of providing the type and/or quality of media theclient desires, and then “control” the suppliers' mobile computingdevices by manipulating the client's computing device. As one example,the client can pan the client's mobile computing device (e.g., move itleft or right), rotate it, tilt it, etc., which actions are transmittedto a supplier's mobile computing device. Alternatively, the client canuse user interface elements (e.g., arrows, buttons, voice control,touch-screens, joysticks, trackballs, etc.) to indicate motion. Theclient's computing device may be capable of detecting the physicalmotion and/or the motion indicated by using user interface elements. Thesupplier's computing device then provides an indication of the directionof motion, e.g., visually, audibly, and/or tactilely. The supplier canthen move the supplier's mobile computing device accordingly. When themovement is to be stopped, the supplier's computing device can thenprovide an indication to stop the motion, e.g., again using visual,audible, and/or tactile cues. As another example, the client can zoom acamera in or out, turn a microphone on or off, etc., and the client'scomputing device can transmit indications of these actions to thesupplier's computing device. The supplier's computing device may becapable of taking parallel actions without requiring further input fromthe supplier.

Thus, a news organization can take advantage of remote “eyes” and “ears”of many people concurrently without deploying expensive andtime-consuming crews to assemble broadcast feeds in a way that“crowd-sourced news” may be lacking because of lack of centralizedcoordination. One skilled in the art will recognize that the technologycan be adapted for other uses, e.g., emergency or other government andcommercial services. For example, legislation may oblige mobile phoneservice providers to contact users, e.g., in the event of an emergency.

In various embodiments, the technology enables clients' computingdevices and suppliers' computing devices to negotiate capabilities,tariffs or charges, etc. Clients and suppliers can register theircomputing devices with one or more server computing devices. The servercomputing devices can track positions of suppliers, capabilities ofsuppliers, etc. When a client desires media (e.g., a data feed or mediastreaming) from a particular location, the client's computing device cantransmit a request indicating the location to a server computing device.The server computing device can identify supplier computing devices thatare presently nearby the indicated location, and can facilitateconnection, e.g., by indicating technical capabilities and/orcoordinating tariffs. Examples of technical capabilities include, e.g.,media encoders or decoders (“codecs”), bandwidth, video captureresolution, etc. After the server facilitates connections between clientcomputing devices and supplier computing devices, supplier computingdevices can provide data feeds to the client computing devices and theclient can transmit requests to suppliers, e.g., to move the suppliercomputing devices.

In various embodiments, the technology provides a method performed by acomputing device, comprising: detecting, by a client component operatingat a first computing device, at least one of a physical motion made tothe first computing device or a camera control operation relating to afirst digital camera associated with the first computing device;creating a message to send to a second computing device; in response toa determination that a physical motion is detected at the firstcomputing device, modifying the created message by adding an indicationof the detected motion; in response to a determination that a cameracontrol operation is detected at the first computing device, modifyingthe created message by adding an indication of the detected cameracontrol operation; and transmitting the modified message to the secondcomputing device to cause the second computing device either to performthe camera control operation relating to a second digital cameraassociated with the second computing device or to provide an indicationto move the second computing device in a manner consistent with thephysical motion detected at the first computing device. The indicationto move the second computing device can be provided to a user of thesecond computing device. Detecting the camera control operation caninclude detecting a zoom operation. Transmitting the modified messagemay cause the second digital camera to perform an equivalent zoomingoperation. Detecting the camera control operation can include detectingthat a video capture mode is enabled. The method may further comprisedetecting at the first computing device an operation of a firstmicrophone associated with the first computing device; modifying thecreated message by adding an indication of the operation of the firstmicrophone; and causing the second computing device to operate a secondmicrophone associated with the second computing device in a mannerconsistent with the operation of the first microphone. The operation ofthe first microphone can be to turn the microphone on or to turn themicrophone off. The method may comprise detecting the physical motionusing a sensor associated with the first computing device. The methodmay invoke a function of an application programming interface thatprovides motion information detected using an accelerometer. The methodmay transmit the modified message, which causes the second computingdevice to generate an alert using visual, audible, and/or sensory cuesto move the second computing device. The method may further comprisereceiving from the second computing device an indication of anappropriate audio codec or a video codec, and selecting at the firstcomputing device one or more codecs corresponding to the indicated audiocodec or video codec. The method may detect the physical motion made tothe first computing device includes detecting a rotation or a tilt. Themethod may receive an audio stream and/or a video stream from the secondcomputing device. The method may relay the received audio stream and/orvideo stream to a third computing device.

In various embodiments, the technology provides a method performed by acomputing device, comprising: receiving at a second computing a messagefrom a first computing device, the message comprising at least anindication of a physical motion or an indication of a camera controloperation, the indicated motion corresponding to a physical motion madeto the first computing device, the indicated camera control operationcorresponding to a camera control operation made at the first computingdevice; requesting to physically move the second computing device inresponse to a determination that the received message indicates aphysical motion made to the first computing device; and controlling adigital camera associated with the second computing device in responseto a determination that the received message indicates a camera controloperation made at the first computing device. The request may be madevisually, audibly, or tactilely. The request may be made to a user ofthe second computing device. The method may transmit from the secondcomputing device a message to the first computing device indicating anaudio codec and/or a video codec operating at the second computingdevice. The method may receive an indication of an audio codec and/orvideo codec operating at the first computing device that is differentfrom the audio codec and/or a video codec operating at the secondcomputing device. The method may select at the second computing devicethe different audio codec and/or a video codec operating at the firstcomputing device. The method may invoke a function of an applicationprogramming interface that enables a digital camera associated with thesecond computing device to be controlled. The method may invoke afunction of an application programming interface that enables amicrophone associated with the second computing device to be controlled.The method may transmit location information indicating a geographiclocation of the second computing device. The method may transmit to thefirst computing device an audio stream using a microphone associatedwith the second computing device and/or a video stream captured using adigital camera associated with the second computing device.

In various embodiments, the technology provides a system, comprising: afirst computing device having one or more processors and memories; asensor configured to detect movement of the first computing device; acomponent configured to employ the sensor to detect at least one of aphysical motion made to the first computing device or a camera controloperation relating to a first digital camera associated with the firstcomputing device; and a component configured to create a message to sendto a second computing device, modify the created message by adding anindication of the detected motion in response to a determination that aphysical motion is detected at the first computing device, modify thecreated message by adding an indication of the detected camera controloperation in response to a determination that a camera control operationis detected at the first computing device, and transmit the modifiedmessage to the second computing device to cause the second computingdevice either to perform the camera control operation relating to asecond digital camera associated with the second computing device or toindicate to move the second computing device in a manner consistent withthe physical motion detected at the first computing device. Theindication to move the second computing device can be made visually,audibly, or tactilely. The indication can be made to a user of thesecond computing device. The sensor may be an accelerometer. The sensormay detect a panning motion. The sensor may detect a tilting motion.

In various embodiments, the technology provides a system, comprising: asecond computing device having one or more processors and memories; acomponent configured to receive a message from a first computing device,the message indicating a motion detected at the first computing deviceand/or a camera control operation detected at the first computingdevice; and a component configured to take an action at the secondcomputing device based on the received message. The system may comprisea component configured to provide a visual cue to a user of the secondcomputing device to move the second computing device according to themotion indicated at the first computing device, or to stop moving thesecond computing device. The system may comprise a component configuredto provide an audible cue to a user of the second computing device tomove the second computing device according to the motion indicated atthe first computing device, or to stop moving the second computingdevice. The system may comprise a component configured to provide asensory cue to a user of the second computing device to move the secondcomputing device according to the motion indicated at the firstcomputing device, or to stop moving the second computing device. Thesensory cue may be a vibration. An electromechanical device may causethe vibration. Multiple electromechanical devices may cause thevibration. At least two electromechanical devices may vibrate the secondcomputing device at two opposing edges or corners of the secondcomputing device. When multiple electromechanical devices vibrate, thesecond computing device may vibrate with a greater magnitude than if asingle electromechanical vibration device is employed. The system maycomprise a component configured to negotiate with the first computingdevice a selection of a video codec and/or an audio codec.

In various embodiments, the technology provides a method performed by acomputing system, comprising: receiving location information from asecond computing device; storing the location information received fromthe second computing device; receiving location information from a thirdcomputing device; storing the location information received from thethird computing device; receiving a request from a first computingdevice for an audio feed and/or a video feed from a specified location;determining that the second computing device is proximate to thespecified location; and indicating the second computing device to thefirst computing device so that the second computing device can transmitaudio and/or video to the first computing device. The method maycomprise determining that the third computing device is also proximateto the specified location; and selecting the second computing device.The method may comprise offering a tender (e.g., a bid or offer) fromthe first computing device to the second and the third computingdevices; and receiving an acceptance from the second computing device.The method may comprise determining capabilities of the first, thesecond, and the third computing devices, and selecting the secondcomputing device because it matches the capabilities of the firstcomputing device more closely.

Turning now to the figures, FIG. 1 is a block diagram illustrating anenvironment 100 in which the disclosed technology may operate in variousembodiments. The environment 100 includes a client computing device 102and supplier computing devices 104, 106, and 108. A first suppliercomputing device 104 is capable of capturing a first scene 110 becauseit is proximate to the first scene 110. A second supplier computingdevice 106 is capable of capturing a second scene 112 because it isproximate to the second scene 112. A third supplier computing device 108is capable of capturing a third scene 114 because it is proximate to thethird scene 114. Each scene can include one or more objects. As oneexample, the first scene 110 includes two objects.

FIG. 2 is a front view illustration of a mobile computing device 200employed by the disclosed technology in some embodiments. The mobilecomputing device 200 includes a touchscreen 202 on which information canbe displayed and from which user input can be received. The mobilecomputing device 200 also includes a button 204 via which user input canbe received. The mobile computing device 200 can include one or morevibration units 206A, 206B, 206C, and 206D for causing vibrations orother tactile indications. The illustrated mobile computing device 200also includes a camera 208, a microphone 210, and a speaker 212. Thecamera 208 can capture still or video images. The microphone (“mic”) 210can capture audio. The speaker 212 can produce sounds or generate otheraudible signals. The mobile computing device 200 can also include anaudio jack (not illustrated) so that a user can substitute an earphoneor a headset for the speaker 212. In various embodiments, the mobilecomputing device can include a media controller (not illustrated) thatis capable of detecting and/or recording media (e.g., images, video,audio, etc.) for transmission to a different computing device. Invarious embodiments, the media controller may be capable of playing backor rendering media received from a different computing device.

FIG. 3 is a block diagram illustrating components of a mobile computingdevice 300 employed by the disclosed technology in various embodiments.The illustrated components include a processor 302, a storage 304, anaccelerometer 306 (or other inertial sensor), a network interface 308, aglobal positioning system unit 310, a camera 312, and a mediaplayer/encoder component 314. The storage 304 can include memory (or“primary”) and secondary storage. The accelerometer 306 can measuremovement of the mobile computing device 300, e.g., on two, three, ormore axes. In various embodiments, other sensors can be used instead ofor in addition to the accelerometer 306. The network interface 308 canbe used to you communicate with voice or data networks. The globalpositioning system (GPS) unit 310 can detect the geographical positionof the mobile computing device 300, e.g., in reference to a network ofsatellites. In various embodiments, other components can be used toinstead of or in addition to the GPS unit 310, e.g., to detectgeographical position of the mobile computing device 300 accurately. Themedia player/encoder components 314 can be used to playback receiveddata feeds or encode captured audio or visual data. In variousembodiments, the mobile computing device 300 may include only a mediaplayer or a media encoder, but not both.

FIG. 4 is a block diagram illustrating aspects of a user interfaceemployed by the disclosed technology in various embodiments. When asupplier's computing device is presently capturing a portion of a scene(e.g., the tree in the first scene 110) but the client desires to see adifferent portion of the scene (e.g., the house in the first scene 110),the client can move or pan the client's computing device. If a clientmoves a client computing device 400 to the right 402, software executingat the client computing device transmits indications of the movement toa first supplier computing device 450 and/or a second supplier computingdevice 460. The first supplier computing device 450 can visuallyindicate to its user (e.g., a supplier) to move the first suppliercomputing device 450 to the right, e.g., by displaying an icon 452pointing to the right. In various embodiments, other visual indicationsmay be provided, e.g., a ball bouncing against a frame, a thin framearound the display with colors indicating direction of movement, etc.Had the client moved the client computing device 400 to the left, thefirst supplier computing device may instead have displayed an iconpointing to the left. The second supplier computing device 460 activatesone or more vibration units 462 (or other tactile output devices) totactilely indicate to its user to either move the second suppliercomputing device 460 to the right or to stop moving the second suppliercomputing device, e.g., because the client has stopped moving the clientcomputing device 400. In various embodiments, when the client moves theclient computing device 400, a supplier computing device may initiallydisplay an icon to request the supplier to begin moving the suppliercomputing device and then may activate a vibration unit to indicate tostop movement. In various embodiments, combinations of visual, audible,and/or tactile inputs may be provided to the supplier. As one example ofaudible input, a supplier computing device can generate sounds on theright side of a stereo sound system to request a panning motion to theright.

FIG. 5 is a flow diagram illustrating routines 500 invoked by a clientcomputing device and a server computing device in various embodiments. Aroutine invoked by a client computing device to identify suppliercomputing devices, negotiate capabilities with the identified suppliercomputing devices, and receive data feeds from the supplier computingdevices begins at block 502. The routine then continues at block 504. Atblock 504, the routine requests identification of one or more suppliersproximate to a specified location. As one example, a client can indicatethat the client is interested in receiving data feeds from a particularlocation at which the client knows a newsworthy event is occurring. Therequest may be transmitted to a server computing device and the servercomputing device may respond with a list of candidate computing devices.The routine then continues at block 506, where the routine queries forthe capabilities of one or more of the listed candidate suppliercomputing devices. In various embodiments, the client computing devicecan transmit the request to the server computing device or to each ofthe listed candidate supplier computing devices. The routine thencontinues at block 508, where the routine identifies desirablecapabilities. As one example, the routine may identify as desirablecapabilities a media format, bandwidth, minimum acceptable resolution,etc. In various embodiments, the identified desirable capabilities maybe transmitted to the server computing device or directly to selectedsupplier computing devices. The routine then continues at block 510,where it requests and/or receives data feeds, e.g., streamingaudio/video from identified suppliers. The routine then continues atblock 512, where it receives directional input from a user of the clientcomputing device. As one example, the routine may detect that the clientis panning the client computing device. The routine then continues atblock 514, where the routine transmits an indication of the directionalinput to one or more supplier computing devices. In various embodiments,the routine may detect the client's operation of a camera, microphone,or other input devices pertaining to the client computing device andtransmit indications of that input to one or more supplier computingdevices. The routine then continues at decision block 516, where itdetermines whether the client has indicated to terminate receiving datafeeds. If the client has indicated to terminate receiving data feeds,the routine returns at block 518. Otherwise, the routine continues atblock 510.

A corresponding routine invoked by a server computing device begins atblock 552. The routine continues at block 554, where it provides a listof capabilities. As one example, a supplier computing device can providea list of capabilities when it registers with a server computing device.Alternatively, the supplier computing device may be queried for itscapabilities, e.g., when a client desires to identify supplier computingdevices that provide desirable capabilities. The routine continues atblock 556, where it receives a list of desired capabilities. As oneexample, the supplier computing device may be compatible with variouscapabilities, but may provide capabilities suitable for consumption ordesirable by the client computing device with which the suppliercomputing device is connecting to provide a data feed. The routinecontinues at block 557, where it provides a data feed conforming withone or more of the listed desirable capabilities. As one example, theroutine may provide a data feed comprising a streaming video at aspecified minimum or maximum resolution. The routine then continues atblock 558, where it receives a directional request from the clientcomputing device. As one example, the routine may receive an indicationthat the client computing device is panning or moving to the right. Theroutine then continues at block 560, where it requests the supplier(e.g., the user of the supplier computing device) to make the indicatedmovement. As examples, the routine may provide visual, audible, and/ortactile cues to begin, continue, or stop movement. The routine thencontinues at decision block 562, where it receives an indication toterminate providing the data feed. In various embodiments, theindication may be received from either the client or the supplier. Ifthe routine receives an indication to terminate providing the data feed,the routine returns at block 564. Otherwise, the routine continues atblock 557.

Those skilled in the art will appreciate that the logic illustrated inFIG. 5 and described above, and in each of the flow diagrams discussedbelow, may be altered in various ways. For example, the order of thelogic may be rearranged, operations may be performed in parallel,illustrated logic may be omitted, other logic may be included, etc.

FIG. 6 is a block diagram illustrating components employed by thedisclosed technology in various embodiments. The components can includeone or more client computing devices (e.g., client computing devices602A, 602B, and 602N), that each are connected via a network 600 to eachother and to server computing devices 604A, 604B, and 604X. The clientand server computing devices are also connected via the network 600 toeach other and to supplier computing devices 606A, 606B, and 606M. Aclient computing device can be a mobile computing device or any othertype of computing device, and can maintain concurrent connections withmultiple supplier computing devices. A client can be, e.g., a newsorganization, an emergency or other government entity, or indeed anyperson or other entity. By employing client computing devices 602A-602N,the clients can take advantage of widely scattered and numerous suppliercomputing devices 606A, 606B, and 606M, e.g., to remotely observecurrent events in real time.

In various embodiments, a first supplier computing device may act as arelay for a second supplier computing device. As one example, a secondcomputing device may not be capable of receiving a cellular phonesignal, but may be able to communicate (e.g., using 802.11 or “wifi”).In such a case, the first supplier computing device may exchange datawith the second supplier computing device using an availablecommunications means (e.g., wifi) and exchange data with a clientcommunications device using, e.g., cellular networks.

FIG. 7 is a block diagram illustrating components employed by thedisclosed technology in various embodiments. A client computing device602 includes a processor 702, storage 704, communications component 706,capabilities negotiator component 708, direction translator component710, and media player component 712. The capabilities negotiatorcomponent 708 negotiates capabilities with a server computing deviceand/or a supplier computing device. As one example, the capabilitiesnegotiator component may request a minimum resolution or bandwidth. Thedirection translator component 710 translates movement a client makes toa client computing device, e.g., to transmit an indicated direction to asupplier computing device. The media player component 712 can play or“render” received data feeds, e.g., streaming audio/video.

A server computing device 604 includes a processor 722, storage 724,communications component 726, client information 728, supplierinformation 730, and a client/supplier matcher component 732. Clientinformation 728 can include information about clients or clientcomputing devices, e.g., capabilities, acceptable tariffs, etc. Supplierinformation 730 can include information about suppliers or suppliercomputing devices, e.g., present location, capabilities, acceptabletariffs, etc.

A supplier computing device 606 includes a processor 742, storage 744,communications component 746, location updater component 748,capabilities provider component 750, data feed provider component 752,direction indicator component 754, and media encoder component 756. Thelocation updater component 748 can provide updated location informationto the server computing device 604 so that when a client computingdevice requests a supplier computing device at a particular location,the server can identify nearby supplier computing devices. Thecapabilities provider component 750 can indicate capabilities of thesupplier computing device 606, e.g., to client computing device 602 orserver computing device 604. The data feed provider 752 can provide datato client computing device 602, e.g., streaming audio/video. Thedirection indicator component 754 can receive indications of directions,e.g., from client computing device 602, and provide indications to auser of the supplier computing device (e.g., supplier) visually,audibly, and/or tactilely. The media encoder component 756 can encodemedia, e.g., received from cameras, microphones, etc. for transmissionto client computing devices via data feed provider 752.

Storage 704, 724, and 744 can include primary and/or secondary storage.Communications components 706, 726, and 746 can enable communicationswith data and/or voice networks.

FIG. 8 is a flow diagram illustrating a routine 800 invoked by thedisclosed technology in various embodiments, e.g., to indicate movementmade to a client computing device. The routine 800 begins at block 802and continues at block 804, where it detects motion, camera controloperations, microphone control operations, or other input that can beindicated to supplier computing devices. The routine 800 then continuesat block 806, where it creates a message. The routine 800 then continuesat decision block 808, where it determines whether motion was detected.If motion is detected, the routine 800 continues at block 810.Otherwise, the routine 800 continues at block 816. At block 810, theroutine 800 indicates the detected motion in the created message. As oneexample, the routine 800 may indicate the direction of movement, thespeed of movement, the amount of movement, etc. The routine 800 thencontinues at decision block 812. At decision block 812, the routine 800determines whether microphone or camera control operations are detected.If the routine 800 determines that microphone or camera controloperations are detected, the routine 800 continues at block the routine800 indicates the detected camera or microphone controller operations814. Otherwise, the routine 800 continues at block 816. At block 814,the routine 800 indicates the detected camera or microphone controloperations in the created message. The routine 800 then continues atblock 816, where it transmits the created and/or modified message. Theroutine 800 then returns at block 818.

FIG. 9 is a block diagram illustrating portions of a message 900exchanged by the disclosed technology in various embodiments. Themessage 900 includes a header section 902, movement information 904,camera control information 906, and microphone control information 908.Examples of camera control information are zoom, on, off, resolution,aperture, shutter speed, exposure control, etc. examples of microphonecontrol information are on, off, gain, volume, etc. In variousembodiments, the message 900 can exclude some of the illustratedinformation segments or include more information segments. Examples ofmovement information are direction of motion, speed of motion, amount ofmotion, rotation, etc.

FIG. 10 is a flow diagram illustrating a routine 1000 invoked by thedisclosed technology in various embodiments. The routine 1000 may beinvoked by a server computing device to receive and store informationpertaining to client and supplier computing devices. The routine 1000begins at block 1002 and continues at block 1004, where it receives andstores client information. The routine continues at block 1006, where itreceives and stores supplier information. The routine continues at block1008, where it receives a request for a data feed from a specifiedlocation, e.g., from a client computing device. The routine continues atblock 1010, where it identifies suppliers near the specified location.The routine continues at block 1012, where it selects one or moresuppliers. The routine then continues at block 1014, where it identifiesthe selected suppliers, e.g., to the client computing device from whichthe request was received. The routine then returns at block 1016.

FIG. 11 is a block diagram illustrating one non-limiting examplecomputing device 1100 that is arranged in accordance with at least someembodiments of the present disclosure. In a very basic configuration1102, computing device 1100 typically includes one or more processors1104 and a system memory 1106. A memory bus 1108 may be used forcommunicating between processor 1104 and system memory 1106.

Depending on the desired configuration, processor 1104 may be of anytype including but not limited to a microprocessor (“μP”), amicrocontroller (“μC”), a digital signal processor (“DSP”), or anycombination thereof. Processor 1104 may include one more levels ofcaching, such as a level one cache 1110 and a level two cache 1112, aprocessor core 1114, and registers 1116. One example processor core 1114may include an arithmetic logic unit (“ALU”), a floating point unit(“FPU”), a digital signal processing core (“DSP Core”), or anycombination thereof. One example memory controller 1118 may also be usedwith processor 1104, or in some implementations memory controller 1118may be an internal part of processor 1104.

Depending on the desired configuration, system memory 1106 may be of anytype including but not limited to volatile memory (such as RAM),non-volatile memory (such as ROM, flash memory, etc.) or any combinationthereof. System memory 1106 may include an operating system 1120, one ormore applications 1122, and program data 1124. Application 1122 mayinclude a media controller 1126 that is arranged to encode and/or decodemedia. Program data 1124 may include a list of capabilities 1128, as isdescribed herein. In some embodiments, application 1122 may be arrangedto operate with program data 1124 on operating system 1120, e.g., toselect and employ action modules. This described basic configuration1102 is illustrated in FIG. 11 by those components within the innerdashed line.

Computing device 1100 may have additional features or functionality, andadditional interfaces to facilitate communications between basicconfiguration 1102 and any required devices and interfaces. For example,a bus/interface controller 1130 may be used to facilitate communicationsbetween basic configuration 1102 and one or more data storage devices1132 via a storage interface bus 1134. Data storage devices 1132 may beremovable storage devices 1136, non-removable storage devices 1138, or acombination thereof. Examples of removable storage and non-removablestorage devices include magnetic disk devices such as flexible diskdrives and hard-disk drives (“HDD”), optical disk drives such as compactdisk (“CD”) drives or digital versatile disk (“DVD”) drives, solid statedrives (“SSD”), and tape drives to name a few. Example computer storagemedia may include volatile and nonvolatile, removable and non-removablemedia implemented in any method or technology for storage ofinformation, such as computer readable instructions, data structures,program modules, or other data.

System memory 1106, removable storage devices 1136 and non-removablestorage devices 1138 are examples of computer storage media. Computerstorage media includes, but is not limited to, RAM, ROM, EEPROM, flashmemory or other memory technology, CD-ROM, digital versatile disks DVDor other optical storage, magnetic cassettes, magnetic tape, magneticdisk storage or other magnetic storage devices, or any other mediumwhich may be used to store the desired information and which may beaccessed by computing device 1100. Any such computer storage media maybe part of computing device 1100.

Computing device 1100 may also include an interface bus 1140 forfacilitating communication from various interface devices (e.g., outputdevices 1142, peripheral interfaces 1144, and communication devices1146) to basic configuration 1102 via bus/interface controller 1130.Example output devices 1142 include a graphics processing unit 1148 andan audio processing unit 1150, which may be configured to communicate tovarious external devices such as a display or speakers via one or moreA/V ports 1152. Example peripheral interfaces 1144 include a serialinterface controller 1154 or a parallel interface controller 1156, whichmay be configured to communicate with external devices such as inputdevices (e.g., keyboard, mouse, pen, voice input device, touch inputdevice, etc.) or other peripheral devices (e.g., printer, scanner, etc.)via one or more I/O ports 1158. One example communication device 1146includes a network controller 1160, which may be arranged to facilitatecommunications with one or more other computing devices 1162 over anetwork communication link via one or more communication ports 1164.

The network communication link may be one example of a communicationmedia. Communication media may typically be embodied by computerreadable instructions, data structures, program modules, or other datain a modulated data signal, such as a carrier wave or other transportmechanism, and may include any information delivery media. A “modulateddata signal” may be a signal that has one or more of its characteristicsset or changed in such a manner as to encode information in the signal.By way of example, and not limitation, communication media may includewired media such as a wired network or direct-wired connection, andwireless media such as acoustic, radio frequency (“RF”), microwave,infrared (“IR”) and other wireless media. The term computer readablemedia as used herein may include both storage media and communicationmedia. The term computer readable storage media as used herein does notinclude communication media.

Computing device 1100 may be implemented as a portion of a small-formfactor portable (or mobile) electronic device such as a cell phone, apersonal data assistant (“PDA”), a personal media player device, awireless web-watch device, a personal headset device, an applicationspecific device, or a hybrid device that include any of the abovefunctions. Computing device 1100 may also be implemented as a personalcomputer including both laptop computer and non-laptop computerconfigurations.

In an illustrative embodiment, any of the operations, processes, etc.described herein can be implemented as computer-readable instructionsstored on a computer-readable medium. The computer-readable instructionscan be executed by a processor of a mobile unit, a network element,and/or any other computing device.

There is little distinction left between hardware and softwareimplementations of aspects of systems; the use of hardware or softwareis generally (but not always, in that in certain contexts the choicebetween hardware and software can become significant) a design choicerepresenting cost vs. efficiency tradeoffs. There are various vehiclesby which processes and/or systems and/or other technologies describedherein can be effected (e.g., hardware, software, and/or firmware), andthat the preferred vehicle will vary with the context in which theprocesses and/or systems and/or other technologies are deployed. Forexample, if an implementer determines that speed and accuracy areparamount, the implementer may opt for a mainly hardware and/or firmwarevehicle; if flexibility is paramount, the implementer may opt for amainly software implementation; or, yet again alternatively, theimplementer may opt for some combination of hardware, software, and/orfirmware.

The foregoing detailed description has set forth various embodiments ofthe devices and/or processes via the use of block diagrams, flowcharts,and/or examples. Insofar as such block diagrams, flowcharts, and/orexamples contain one or more functions and/or operations, it will beunderstood by those within the art that each function and/or operationwithin such block diagrams, flowcharts, or examples can be implemented,individually and/or collectively, by a wide range of hardware, software,firmware, or virtually any combination thereof. In one embodiment,several portions of the subject matter described herein may beimplemented via Application Specific Integrated Circuits (ASICs), FieldProgrammable Gate Arrays (FPGAs), digital signal processors (DSPs), orother integrated formats. However, those skilled in the art willrecognize that some aspects of the embodiments disclosed herein, inwhole or in part, can be equivalently implemented in integratedcircuits, as one or more computer programs running on one or morecomputers (e.g., as one or more programs running on one or more computersystems), as one or more programs running on one or more processors(e.g., as one or more programs running on one or more microprocessors),as firmware, or as virtually any combination thereof, and that designingthe circuitry and/or writing the code for the software and/or firmwarewould be well within the skill of one of skill in the art in light ofthis disclosure. In addition, those skilled in the art will appreciatethat the mechanisms of the subject matter described herein are capableof being distributed as a program product in a variety of forms, andthat an illustrative embodiment of the subject matter described hereinapplies regardless of the particular type of signal bearing medium usedto actually carry out the distribution. Examples of a signal bearingmedium include, but are not limited to, the following: a recordable typemedium such as a floppy disk, a hard disk drive, a CD, a DVD, a digitaltape, a computer memory, etc.; and a transmission type medium such as adigital and/or an analog communication medium (e.g., a fiber opticcable, a waveguide, a wired communications link, a wirelesscommunication link, etc.).

Those skilled in the art will recognize that it is common within the artto describe devices and/or processes in the fashion set forth herein,and thereafter use engineering practices to integrate such describeddevices and/or processes into data processing systems. That is, at leasta portion of the devices and/or processes described herein can beintegrated into a data processing system via a reasonable amount ofexperimentation. Those having skill in the art will recognize that atypical data processing system generally includes one or more of asystem unit housing, a video display device, a memory such as volatileand non-volatile memory, processors such as microprocessors and digitalsignal processors, computational entities such as operating systems,drivers, graphical user interfaces, and applications programs, one ormore interaction devices, such as a touch pad or screen, and/or controlsystems including feedback loops and control motors (e.g., feedback forsensing position and/or velocity; control motors for moving and/oradjusting components and/or quantities). A typical data processingsystem may be implemented utilizing any suitable commercially availablecomponents, such as those typically found in datacomputing/communication and/or network computing/communication systems.

The herein described subject matter sometimes illustrates differentcomponents contained within, or connected with, different othercomponents. It is to be understood that such depicted architectures aremerely examples, and that in fact many other architectures can beimplemented which achieve the same functionality. In a conceptual sense,any arrangement of components to achieve the same functionality iseffectively “associated” such that the desired functionality isachieved. Hence, any two components herein combined to achieve aparticular functionality can be seen as “associated with” each othersuch that the desired functionality is achieved, irrespective ofarchitectures or intermedial components. Likewise, any two components soassociated can also be viewed as being “operably connected”, or“operably coupled”, to each other to achieve the desired functionality,and any two components capable of being so associated can also be viewedas being “operably couplable”, to each other to achieve the desiredfunctionality. Specific examples of operably couplable include but arenot limited to physically mateable and/or physically interactingcomponents and/or wirelessly interactable and/or wirelessly interactingcomponents and/or logically interacting and/or logically interactablecomponents.

With respect to the use of substantially any plural and/or singularterms herein, those having skill in the art can translate from theplural to the singular and/or from the singular to the plural as isappropriate to the context and/or application. The varioussingular/plural permutations may be expressly set forth herein for sakeof clarity.

It will be understood by those within the art that, in general, termsused herein, and especially in the appended claims (e.g., bodies of theappended claims) are generally intended as “open” terms (e.g., the term“including” should be interpreted as “including but not limited to,” theterm “having” should be interpreted as “having at least,” the term“includes” should be interpreted as “includes but is not limited to,”etc.). It will be further understood by those within the art that if aspecific number of an introduced claim recitation is intended, such anintent will be explicitly recited in the claim, and in the absence ofsuch recitation no such intent is present. For example, as an aid tounderstanding, the following appended claims may contain usage of theintroductory phrases “at least one” and “one or more” to introduce claimrecitations. However, the use of such phrases should not be construed toimply that the introduction of a claim recitation by the indefinitearticles “a” or “an” limits any particular claim containing suchintroduced claim recitation to embodiments containing only one suchrecitation, even when the same claim includes the introductory phrases“one or more” or “at least one” and indefinite articles such as “a” or“an” (e.g., “a” and/or “an” should be interpreted to mean “at least one”or “one or more”); the same holds true for the use of definite articlesused to introduce claim recitations. In addition, even if a specificnumber of an introduced claim recitation is explicitly recited, thoseskilled in the art will recognize that such recitation should beinterpreted to mean at least the recited number (e.g., the barerecitation of “two recitations,” without other modifiers, means at leasttwo recitations, or two or more recitations). Furthermore, in thoseinstances where a convention analogous to “at least one of A, B, and C,etc.” is used, in general such a construction is intended in the senseone having skill in the art would understand the convention (e.g., “asystem having at least one of A, B, and C” would include but not belimited to systems that have A alone, B alone, C alone, A and Btogether, A and C together, B and C together, and/or A, B, and Ctogether, etc.). In those instances where a convention analogous to “atleast one of A, B, or C, etc.” is used, in general such a constructionis intended in the sense one having skill in the art would understandthe convention (e.g., “a system having at least one of A, B, or C” wouldinclude but not be limited to systems that have A alone, B alone, Calone, A and B together, A and C together, B and C together, and/or A,B, and C together, etc.). It will be further understood by those withinthe art that virtually any disjunctive word and/or phrase presenting twoor more alternative terms, whether in the description, claims, ordrawings, should be understood to contemplate the possibilities ofincluding one of the terms, either of the terms, or both terms. Forexample, the phrase “A or B” will be understood to include thepossibilities of “A” or “B” or “A and B.”

In addition, where features or aspects of the disclosure are describedin terms of Markush groups, those skilled in the art will recognize thatthe disclosure is also thereby described in terms of any individualmember or subgroup of members of the Markush group.

As will be understood by one skilled in the art, for any and allpurposes, such as in terms of providing a written description, allranges disclosed herein also encompass any and all possible subrangesand combinations of subranges thereof. Any listed range can be easilyrecognized as sufficiently describing and enabling the same range beingbroken down into at least equal halves, thirds, quarters, fifths,tenths, etc. As a non-limiting example, each range discussed herein canbe readily broken down into a lower third, middle third and upper third,etc. As will also be understood by one skilled in the art all languagesuch as “up to,” “at least,” and the like include the number recited andrefer to ranges which can be subsequently broken down into subranges asdiscussed above. Finally, as will be understood by one skilled in theart, a range includes each individual member. Thus, for example, a grouphaving 1-3 cells refers to groups having 1, 2, or 3 cells. Similarly, agroup having 1-5 cells refers to groups having 1, 2, 3, 4, or 5 cells,and so forth.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims. Accordingly, the invention isnot limited except as by the appended claims.

We claim:
 1. A method performed by a first computing device, comprising:determining whether an input by a client component operating at thefirst computing device includes a physical motion made to the firstcomputing device corresponding to a requested motion of a secondcomputing device; determining whether the input by the client componentoperating at the first computing device includes a camera controloperation relating to a first digital camera associated with the firstcomputing device; detecting, at the first computing device, an operationof a first microphone associated with the first computing device;creating a message to send to the second computing device, the messageincluding an indication of the determined input; modifying the messageto include an indication of the operation of the first microphone to themessage; and transmitting the modified message to the second computingdevice to cause the second computing device to: perform the cameracontrol operation relating to a second digital camera associated withthe second computing device in response to the determined inputincluding the camera control operation, provide an indication to movethe second computing device in a manner consistent with the requestedmotion in response to the determined input including the physicalmotion, and operate a second microphone associated with the secondcomputing device in a manner consistent with the operation of the firstmicrophone.
 2. The method of claim 1, wherein the indication to move thesecond computing device is provided to a user of the second computingdevice.
 3. The method of claim 1, wherein the camera control operationrelating to the first digital camera includes a zoom operation.
 4. Themethod of claim 3, wherein the transmitting the modified message causesthe second digital camera to perform an equivalent zoom operation. 5.The method of claim 1, wherein the camera control operation includes avideo capture mode.
 6. The method of claim 1, wherein the operation ofthe first microphone is to turn the microphone on or to turn themicrophone off.
 7. The method of claim 1, further comprising using asensor associated with the first computing device to detect the physicalmotion.
 8. The method of claim 1, further comprising invoking a functionof an application programming interface that provides motion informationdetected using an accelerometer.
 9. The method of claim 1, wherein thetransmitting the modified message causes the second computing device togenerate an alert using visual, audible, and/or sensory cues to move thesecond computing device.
 10. The method of claim 1, further comprising:receiving from the second computing device an indication of anappropriate audio codec or a video codec; and selecting at the firstcomputing device one or more codecs corresponding to the indicated audiocodec or video codec.
 11. The method of claim 1, wherein the detectedphysical motion made to the first computing device includes detecting arotation or a tilt.
 12. The method of claim 1, further comprisingreceiving an audio stream and/or a video stream from the secondcomputing device.
 13. The method of claim 12, further comprisingrelaying the received audio stream and/or video stream to a thirdcomputing device.
 14. A non-transitory computer-readable storage mediumstoring instructions that, when executed, cause a first computing deviceincluding a first microphone to perform a method, comprising: receiving,from a second computing device, a message including a determined inputand an indication of an operation of a second microphone, wherein thedetermined input includes an indication of at least one of: a physicalmotion at the second computing device corresponding to a requestedmotion of the first computing device, and a camera control operationmade at the second computing device; and performing operations of:moving the first computing device in response to a determination thatthe received message includes the indication of the physical motion atthe second computing corresponding to the requested motion of the firstcomputing device, controlling a digital camera associated with the firstcomputing device in response to a determination that the receivedmessage includes the indication of the camera control operation made atthe second computing device, and operating the first microphone in amanner consistent with the operation of the second microphone.
 15. Thenon-transitory computer-readable storage medium of claim 14, wherein theindicated requested motion is included in the message in at least one ofa visual, audio, or tactile form.
 16. The non transitorycomputer-readable storage medium of claim 15, wherein the indicatedrequested motion is directed to a user of the first computing device.17. The non-transitory computer-readable storage medium of claim 14,wherein the method further comprises transmitting, from the firstcomputing device, a message to the second computing device indicating anaudio codec and/or a video codec operating at the first computingdevice.
 18. The non-transitory computer-readable storage medium of claim17, wherein the method further comprises receiving an indication of anaudio codec and/or video codec operating at the second computing devicethat is different from the audio codec and/or a video codec operating atthe first computing device.
 19. The non-transitory computer-readablestorage medium of claim 17, wherein the method further comprisesselecting at the first computing device the different audio codec and/ora video codec operating at the second computing device.
 20. Thenon-transitory computer-readable storage medium of claim 14, wherein themethod further comprises invoking a function of an applicationprogramming interface that enables a digital camera associated with thefirst computing device to be controlled.
 21. The non-transitorycomputer-readable storage medium of claim 14, wherein the method furthercomprises invoking a function of an application programming interfacethat enables a microphone associated with the first computing device tobe controlled.
 22. The non-transitory computer-readable storage mediumof claim 14, wherein the method further comprises transmitting locationinformation indicating a geographic location of the first computingdevice.
 23. The non-transitory computer-readable storage medium of claim14, wherein the method further comprises transmitting to the secondcomputing device an audio stream using a microphone associated with thefirst computing device and/or a video stream captured using a digitalcamera associated with the first computing device.
 24. A system,comprising: a first computing device having one or more processors andmemories; a first component configured to: determine whether an inputincludes a physical motion made to the first computing devicecorresponding to a requested motion made at the first computing device,determine whether the input includes a camera control operation relatingto a first digital camera associated with the first computing device,and detect an operation of a first microphone associated with the firstcomputing device; and a second component configured to: create a messageto send to a second computing device, the message including anindication of the determined input, modify the message to include anindication of the operation of the first microphone to the message, andtransmit the modified message to the second computing device to causethe second computing device to perform: the camera control operationrelating to a second digital camera associated with the second computingdevice in response to the determined input including the camera controloperation, providing an indication to move the second computing devicein a manner consistent with the requested motion in response to thedetermined input including the physical motion, and operating a secondmicrophone associated with the second computing device in a mannerconsistent with the operation of the first microphone.
 25. The system ofclaim 24, wherein the indication of the detected motion is made at leastone of visually, audibly, or tactilely.
 26. The system of claim 25,wherein the indication is made to a user of the second computing device.27. The system of claim 24, wherein the sensor is an accelerometer. 28.The system of claim 24, wherein the sensor detects a panning motion. 29.The system of claim 24, wherein the sensor detects a tilting motion.